package fiuba.webapp.action;

import javax.servlet.http.HttpServletRequest;

import fiuba.model.Configuracion;
import fiuba.model.Estructura;
import fiuba.model.ListaNoticias;
import fiuba.model.Noticia;
import fiuba.model.Seccion;
import fiuba.service.EstructuraManager;
import fiuba.service.GenericManager;
import fiuba.service.MenuManager;
import fiuba.service.NoticiaManager;
import fiuba.service.SeccionDataManager;

public class VerSeccionAction extends BaseAction {
	
private static final long serialVersionUID = 3661474075831926467L;
private NoticiaManager noticiaManager;

private GenericManager<Seccion,Long> seccionManager;
private Seccion seccion;

private Long id;
private EstructuraManager estructuraManager;
private MenuManager menuManager;
private SeccionDataManager seccionDataManager;
private String contenido;
private String titulo;
private String autor;
private String html;
private String headHtml;
private String tituloPagina;
private GenericManager<Configuracion,Long> configuracionManager;

public void setConfiguracionManager(
		GenericManager<Configuracion, Long> configuracionManager) {
	this.configuracionManager = configuracionManager;
}

public void setSeccionManager(
		GenericManager<Seccion, Long> seccionManager) {
	this.seccionManager = seccionManager;
}


public String getContenido() {
	return contenido;
}

public void setContenido(String contenido) {
	this.contenido = contenido;
}

public String getTitulo() {
	return titulo;
}

public void setTitulo(String titulo) {
	this.titulo = titulo;
}

public String getAutor() {
	return autor;
}

public void setAutor(String autor) {
	this.autor = autor;
}

public String ver() {
	Configuracion config = this.configuracionManager.get(1L);
	
	this.tituloPagina = config.getPageTitle();
	this.headHtml = estructuraManager.generateHeadHtml(config);
	// Si hay id, es ver noticia creada, si no es preview
    if (id != null) {
		// Si el sitio esta OFFLINE => Redireccionar a "Sitio Offline"
		if ( ! config.isOnline()) {
			return "offline";
		}
		// Intento ver la seccion solicitada
		seccion = seccionManager.get(id);
    		// Si la seccion no esta disponible, reenviar al index
    		if (seccion == null) {
    			return "index";
    		}
    		
        }
    else {
		return ERROR;
    }
    try {
		Estructura estructura = seccion.getEstructura();
		ListaNoticias listaNoticias = seccion.getListaNoticias();
		
		String htmlNoticias = seccionDataManager.getHtmlNoticias(seccion);
    	// Necesita obtener el IP
		HttpServletRequest request = this.getRequest(); 
		String remoteIp = request.getRemoteAddr();
		// Ahora si, tener el HTML total
    	this.html = estructuraManager.generateHtml(estructura, htmlNoticias,seccion.getMenu(),remoteIp);
    }
   catch (Exception e) {
    	log.debug("NO ENCONTRO ESTRUCTURA O ERROR GRAVE" );
	    this.html = "<body>" +  "</body>";
    }
	return SUCCESS;
}


public void setNoticiaManager(NoticiaManager noticiaManager) {
	this.noticiaManager = noticiaManager;
}

public Long getId() {
	return id;
}

public void setId(Long id) {
	this.id = id;
}

public void setEstructuraManager(EstructuraManager estructuraManager) {
	this.estructuraManager = estructuraManager;
}

public String getHtml() {
	return html;
}

public void setHtml(String html) {
	this.html = html;
}

public String getTituloPagina() {
	return tituloPagina;
}

public void setTituloPagina(String tituloPagina) {
	this.tituloPagina = tituloPagina;
}

public String getHeadHtml() {
	return headHtml;
}

public void setHeadHtml(String headHtml) {
	this.headHtml = headHtml;
}

public void setMenuManager(MenuManager menuManager) {
	this.menuManager = menuManager;
}

public void setSeccionDataManager(SeccionDataManager seccionDataManager) {
	this.seccionDataManager = seccionDataManager;
}

}
